package cn.tedu.mall.seckill.controller;

import cn.tedu.mall.common.restful.JsonPage;
import cn.tedu.mall.common.restful.JsonResult;
import cn.tedu.mall.pojo.seckill.vo.SeckillSpuDetailSimpleVO;
import cn.tedu.mall.pojo.seckill.vo.SeckillSpuVO;
import cn.tedu.mall.seckill.service.ISeckillSpuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
//什么时候使用Controller注解 下载的时候 直接使用response返回数据流 byte[]
public class SeckillSpuController {
    @Autowired
    private ISeckillSpuService seckillSpuService;

    /**
     * 在redis中查询当期的spu列表
     * 现有数据spu,就是所有spu的列表
     */
    @GetMapping("/seckill/spu/list")
    @PreAuthorize("permitAll()")
    public JsonResult<JsonPage<SeckillSpuVO>> listSpuSeckill() {
        JsonPage<SeckillSpuVO> jsonPage
                = seckillSpuService.listSeckillSpus(null, null);
        return JsonResult.ok(jsonPage);
    }

    /**
     * 在redis中SPU单个查询
     */
    @GetMapping("/seckill/spu/{spuId}")
    @PreAuthorize("permitAll()")
    public JsonResult<SeckillSpuVO> getSeckillSpu(
            @PathVariable("spuId") Long spuId) {
        SeckillSpuVO seckillSpuVO = seckillSpuService.getSeckillSpu(spuId);
        return JsonResult.ok(seckillSpuVO);
    }

    /**
     * 在redis中利用spuId查询spuDetail //UNDO 自行实现
     */
    @GetMapping("/seckill/spu/detail/{spuId}")
    public JsonResult<SeckillSpuDetailSimpleVO> getSeckillSpuDetail(
            @PathVariable("spuId") Long spuId) {
        SeckillSpuDetailSimpleVO seckillSpuDetail =
                seckillSpuService.getSeckillSpuDetail(spuId);
        return JsonResult.ok(seckillSpuDetail);
    }
}
